unsigned char datasz[4];
unsigned char databuf[1]; /* actually an variable length array... */
} gusb_pkt;
- unsigned char dbuf[MAX_GPS_PACKET_SIZE];
+ unsigned char dbuf[1024];
} garmin_usb_packet;
/*
len = 0;
isDLE = gpsFalse;
p = (*packet)->data;
+
+ if (gps_is_usb) {
+ return GPS_Packet_Read_usb(fd, packet);
+ }
start = GPS_Time_Now();
GPS_Diag("Rx Data:");
int32 GPS_Get_Ack(int32 fd, GPS_PPacket *tra, GPS_PPacket *rec)
{
+ if (gps_is_usb) {
+ return 1;
+ }
+
if(!GPS_Packet_Read(fd, rec))
return 0;
return 1;
}
-
-
-
-
-
-#if 0
-
-int32 ajb(int32 fd)
-{
- UC u;
- int32 n;
-
- while(1)
- {
- if((n=GPS_Serial_Chars_Ready(fd)))
- {
- if(read(fd,&u,1)==-1)
- {
- perror("read");
- GPS_Error("NMEA Read: Read error");
- gps_errno = FRAMING_ERROR;
- return 0;
- }
- printf("%d %c\n",u,u);
- }
- }
-
- return 0;
-}
-#endif
int32 i;
UC chk=0;
+
p = data;
q = (*packet)->data;
+
+ if (gps_is_usb) {
+ GPS_Make_Packet_usb(packet, type, data, n);
+ return;
+ }
(*packet)->dle = DLE;
(*packet)->edle = DLE;
(*packet)->n = n;
(*packet)->type = type;
(*packet)->bytes = 0;
-
+
chk -= type;
if(n == DLE)
size_t ret;
const char *m1, *m2;
+ if (gps_is_usb)
+ return GPS_Write_Packet_usb(fd, packet);
+
GPS_Diag("Tx Data:");
Diag(&packet->dle, 3);
if((ret=GPS_Serial_Write(fd,(const void *) &packet->dle,(size_t)3)) == -1)
int32 GPS_Send_Ack(int32 fd, GPS_PPacket *tra, GPS_PPacket *rec)
{
UC data[2];
+
+ if (gps_is_usb)
+ return 1;
GPS_Util_Put_Short(data,(US)(*rec)->type);
GPS_Make_Packet(tra,LINK_ID[0].Pid_Ack_Byte,data,2);
DCB tio;
COMMTIMEOUTS timeout;
+ if (gps_is_usb) {
+ switch (gusb_open(port)) {
+ case 0: return NULL;
+ case 1: return 1;
+ case 2: exit(0);
+ }
+ }
+
comport = CreateFile(port, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);
int32 GPS_Serial_Off(const char *port, int32 fd)
{
- CloseHandle(comport);
+ if (gps_is_usb) {
+ gusb_close(port);
+ } else {
+ CloseHandle(comport);
+ }
return 1;
}
int32 GPS_Serial_Write(int32 handle, const void *obuf, int size)
{
- return write(handle, obuf, size);
+ return write(handle, obuf, size);
}
fd_set rec;
struct timeval t;
+ if (gps_is_usb) return 1;
+
FD_ZERO(&rec);
FD_SET(fd,&rec);
int32 GPS_Serial_On(const char *port, int32 *fd)
{
-
+ if (gps_is_usb) {
+ return gusb_init();
+ }
if(!GPS_Serial_Savetty(port))
{
GPS_Error("Cannot access serial port");